package com.leiyk.rateLimiter.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @Description: 滑动窗口算法限流注解
 * @Author: leiyk6
 * @Date: 2024/7/4 17:12
 */
@Target(ElementType.METHOD)
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface SlideRateLimiter {
    /**
     * @author leiyk6
     * @date 2024/7/5 10:01
     * desc: 时间滑动窗口大小
     */
    long windowSize();

    /**
     * @author leiyk6
     * @date 2024/7/5 10:05
     * desc: 时间滑动窗口单位
     */
    TimeUnit timeUnit();

    /**
     * @author leiyk6
     * @date 2024/7/5 10:02
     * desc: 滑动窗口内的最大请求数
     */
    int count();

}
